import { getSetting, chooseAddress, openSetting, showModal,showToast } from "../../utils/asyncWx.js";
import regeneratorRuntime from '../../lib/runtime/runtime';


Page({
  data: {
    address: {},
    cart: [],
    allChecked: false,
    totalPrice: 0,
    totalNum: 0
  },

  onShow() {
    // 获取缓存中的收货地址
    const address = wx.getStorageSync('address');
    // 获取缓存中的购物车信息
    const cart = wx.getStorageSync("cart") || [];

    this.setData({ address });
    this.setCart(cart);

  },

  // 点击收货地址
  async handleChooseAddress() {

    try {
      // 1 获取权限状态
      const res1 = await getSetting();
      const scopeAddress = res1.authSetting["scope.address"];
      // 2 判断 权限状态
      if (scopeAddress === false) {
        // 3 诱导用户打开权限
        await openSetting();

      }

      // 4 调用获取收货地址的API
      let address = await chooseAddress();
      // 存入拼接字串
      address.all = address.provinceName + address.cityName + address.countyName + address.detailInfo;
      // console.log(res2);
      // 存入缓存中
      wx.setStorageSync("address", address);

      // wx.getSetting({
      //   success: (result) => {
      //     // 2获取权限状态 主要发现一些属性名怪异要用[]来取
      //     const scopeAddress=result.authSetting["scope.address"]
      //     if(scopeAddress===true||scopeAddress===undefined){
      //       wx.chooseAddress({
      //         success: (result1) => {
      //           console.log(result1);
      //         }
      //       });
      //     }else{
      //       // 2 用户以前拒绝过授权
      //       wx.openSetting({
      //         success: (result2) => {
      //           wx.chooseAddress({
      //             success: (result3) => {
      //               console.log(result3);
      //             }
      //           });
      //         },
      //         fail: () => {},
      //         complete: () => {}
      //       });

      //     }
      //   },
      //   fail: () => {},
      //   complete: () => {}
      // });
    } catch (error) {
      console.log(error);
    }

  },

  // 商品的选中
  handleItemChange(e) {
    // 1 获取被修改的商品的ID
    const goods_id = e.currentTarget.dataset.id
    // 2 获取购物车数组
    let { cart } = this.data;
    // 3 找到被修改的商品对象
    let index = cart.findIndex(v => v.goods_id === goods_id);
    // 4 选中状态取反
    cart[index].checked = !cart[index].checked;

    this.setCart(cart);


  },

  // 设置购物车状态 同时重新计算 底部工具栏的数据 全选 总数量 总价格
  setCart(cart) {
    let allChecked = true;

    // 总价格 总数量
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(v => {
      if (v.checked) {
        totalPrice += v.num * v.goods_price;
        totalNum += v.num;
      } else {
        allChecked = false;
      }
    })

    // 判断数组是否为空
    allChecked = cart.length ? allChecked : false;

    this.setData({
      cart,
      totalPrice,
      totalNum,
      allChecked
    });
    wx.setStorageSync("cart", cart);
  },

  // 商品全选功能
  handleItemAllCheck() {
    // 1 获取data中的数据
    let { cart, allChecked } = this.data;
    // 2 修改值
    allChecked = !allChecked;
    // 3 循环修改CART,forEach会修改原数组数据
    cart.forEach(v => v.checked = allChecked);
    // 4 把修改后的值 填回
    this.setCart(cart);
  },

  // 商品数量编辑功能
  async handleItemNumEdit(e) {

    // 1 获取参数
    const { operation, id } = e.currentTarget.dataset;
    // console.log(operation,id);

    // 获取购物车
    let { cart } = this.data

    // 3 找到需要修改的商品
    let index = cart.findIndex(v => v.goods_id === id);

    // 判断是否要执行删除
    if (cart[index].num === 1 && operation === -1) {
      // 弹窗提示
      // wx.showModal({
      //   title: '提示',
      //   content: '您是否删除这个商品?',
      //   showCancel: true,
      //   cancelText: '取消',
      //   cancelColor: '#000000',
      //   confirmText: '确定',
      //   confirmColor: '#3CC51F',
      //   success: (result) => {
      //     if (result.confirm) {
      //       cart.splice(index, 1);
      //       this.setCart(cart);
      //     } else if (result.cancel) {
      //       console.log("用户点击取消");
      //     }
      //   }
      // });
      const res = await showModal({ content: "您是否删除这个商品?" });
      if (res.confirm) {
        cart.splice(index, 1);
        this.setCart(cart);
      } else if (res.cancel) {
        console.log("用户点击取消");
      }
    } else {
      // 4 修改数量
      cart[index].num += operation;
      // 5 设置回缓存和data
      this.setCart(cart);
    }
  },
  // 点击结算
  async handlePay(){
    // 1 判断收货地址
    const {address,totalNum}=this.data;
    if (!address.userName) {
      await showToast({title:"您还没有选择收货地址"});       
      return;
    }

    // 2 判断用户有没有选购商品
     if (totalNum===0) {
       await showToast({title:"您还没有选购商品"})
       return;
     }

    //  3 跳转到支付页面
    wx.navigateTo({
      url: '/pages/pay/index'
    });
      


  }



})